package com.xxjqr.rbac.controller;


import com.github.pagehelper.PageInfo;
import com.xxjqr.rbac.entity.dto.RoleDto;
import com.xxjqr.rbac.entity.vo.RoleVo;
import com.xxjqr.rbac.enums.CodeMsgEnum;
import com.xxjqr.rbac.exception.CommonException;
import com.xxjqr.rbac.service.TbRoleService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 角色表 前端控制器
 * </p>
 *
 * @author 丁昌江
 * @since 2021-01-25
 */
@RestController
@RequestMapping("role")
@AllArgsConstructor
public class TbRoleController {

    private final TbRoleService roleService;

    /**
     * @param name   java.lang.String
     * @param status java.lang.Integer
     * @描述 获取角色列表
     * @返回 com.github.pagehelper.PageInfo<com.xxjqr.rbac.entity.vo.RoleVo>
     * @码农 丁昌江
     * @日期 2021/2/25 15:34
     */
    @GetMapping("getRoles")
    public PageInfo<RoleVo> getRoles(String name, Integer status) {
        PageInfo<RoleVo> roles = roleService.getRoles(name, status);
        return roles;
    }

    /**
     * @描述 获取角色列表（不带分页的）
     * @返回 java.util.List<com.xxjqr.rbac.entity.vo.MenuVo>
     * @码农 丁昌江
     * @日期 2021/2/25 15:35
     */
    @GetMapping("getRoleList")
    public List<RoleVo> getRoleList() {
        return roleService.getRoleList();
    }


    /**
     * @描述 根据角色id获取对应的菜单id
     * @param id 角色id
     * @返回 java.util.List<com.xxjqr.rbac.entity.vo.MenuVo>
     * @码农 丁昌江
     * @日期 2021/2/25 15:35
     */
    @GetMapping("getRoleMenuIds")
    public List<Long> getRoleMenuIds(@RequestParam Long id) {
        return roleService.getRoleMenuIds(id);
    }

    /**
     * @描述 添加角色
     * @param roleDto com.xxjqr.rbac.entity.dto.RoleDto
     * @返回 java.lang.String
     * @码农 丁昌江
     * @日期 2021/2/25 15:33
     */
    @PostMapping("addRole")
    public void addRole(@RequestBody RoleDto roleDto) {
        if (roleService.addRole(roleDto) <= 0) {
            throw CommonException.generate(CodeMsgEnum.ADD_ERROR);
        }
    }

    /**
     * @param id java.lang.Long
     * @描述 删除角色
     * @返回 java.lang.String
     * @码农 丁昌江
     * @日期 2021/2/25 15:33
     */
    @DeleteMapping("delRole")
    public void delRole(@RequestParam Long id) {
        if (!roleService.delRole(id)) {
            throw CommonException.generate("找不到该角色");
        }
    }

    /**
     * @param roleDto com.xxjqr.rbac.entity.dto.RoleDto
     * @描述 修改角色
     * @返回 java.lang.String
     * @码农 丁昌江
     * @日期 2021/2/25 15:33
     */
    @PutMapping("editRole")
    public void editRole(@RequestBody RoleDto roleDto) {
        if (!roleService.editRole(roleDto)) {
            throw CommonException.generate(CodeMsgEnum.NOTFOUND);
        }
    }
}
